﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include <stdint.h>
#include "NdbDataSchema.h"

namespace gcmp
{
    /// \brief 图形节点的类型
    SERIALIZABLE_ENUM_CLASS(GraphicsNodeType)
    {
        None = -1,                    ///<  默认(未设置)
        Arc3d = 1,                    ///<  圆弧
        Plane3d = 2,                  ///<  平面
        Edge = 3,                     ///<  BRep体的边
        Group = 4,                    ///<  图形节点组
        Curve3d = 5,                  ///<  曲线
        Ellipse3d = 6,                ///<  椭圆
        NurbsCurve3d =7,              ///<  样条曲线
        Point3d = 8,                  ///<  点
        Pointset = 9,                 ///<  点集
        Text = 10,                    ///<  文字
        Picture = 11,                 ///<  图片
        Zoomfree = 12,                ///<  缩放无关
        Body = 13,                    ///<  BRep体
        Face = 14,                    ///<  BRep体的面
        ElementShape = 15,            ///<  Element图形表达
        ElementShapeReference = 16,   ///<  Element图形表达的引用
        DocumentReference = 17,       ///<  文档的引用
        LinkedReference = 18,         ///<  链接对象的引用
        Curve2d = 19,                 ///<  二维曲线
        Line2d = 20,                  ///<  二维直线
        Arc2d = 21,                   ///<  二维圆弧
        Ellipse2d = 22,               ///<  二维椭圆
        NurbsCurve2d = 23,            ///<  二维样条曲线
        PlaneCurve = 24,              ///<  二维平面曲线
        MeshBody = 25,                ///<  三角面片体
        RichTex = 26,                 ///<  富文本
        Fill = 27,                    ///<  填充
        PolyCurve = 28,               ///<  二维多段线
        HiddenLine = 29,              ///<  隐藏线
        Line3d = 30,                  ///<  直线
        GISTile = 31,                 ///<  倾斜摄影数据
        PolyCurve3d = 32,             ///<  三维多段线
        SpiralLine3d = 33             ///<  螺旋线
    };
    
    /// @brief 编译期常量:GraphicsNode类型个数,为std::array等容器使用,新增类型请将其调整为最大值
    constexpr auto GraphicsNodeTypeNumber = static_cast<std::size_t>(GraphicsNodeType::SpiralLine3d) + 2;
}
